package edu.scau.mis.pos.mapper;

import edu.scau.mis.pos.dto.ProductSkusDTO;
import edu.scau.mis.pos.vo.ProductSkusVo;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface StoreMapper {
    /**
     * 查询商品编码、SKU编码、图片、商品名称、规格属性、库存、价格、上架状态
     *
     * @return 返回包含商品和SKU信息的VO列表
     */
    List<ProductSkusDTO> selectProductAndSkuDetails();

    /**
     * 根据条件（商品编码、商品名称、规格属性）查询
     * @param productSkusVo 商品编码、商品名称、规格属性(尺寸、颜色)
     * @return
     */
    List<ProductSkusDTO> selectProductAndSkuDetailsByCondition(ProductSkusVo productSkusVo);

    /**
     * 删除单个记录
     * @param skuCode sku编码
     * @return 影响记录数
     */
    int deleteProductAndSkuDetailsByCode(String skuCode);

    /**
     * 批量删除
     * @param skuCode sku编码集合
     * @return
     */
    int deleteProductAndSkuDetailsByCodes(String[] skuCode);

    /**
     * 查询当前状态，0下架1上架
     * @param skuCode 编码
     * @return 状态码(0,1)
     */
    int selectIsAvailableBySkuCode(String skuCode);

    /**
     * 切换状态
     * @param skuCode 编码
     * @return 影响行数（1成功）
     */

    int toggleIsAvailableBySkuCode(String skuCode, int status);

    /**
     * 查询当前库存
     * @param productSn 商品编码
     * @return 库存量
     */
    int selectTotalStockQuantityBySn(String productSn);

    /**
     * 更新商品总库存
     * @param productSn 商品编码
     * @return 影响行数（1成功）
     */
    int insertProductStockQuantityBySn(String productSn,int stockQuantity);
    /**
     * 更新库存
     * @param productSkusDTO
     * @return 影响行数
     */
    int updateStockBySkuCode(ProductSkusDTO productSkusDTO);

    /**
     * 新增库存
     * @param productSkusDTO
     * @return 影响行数
     */

    int insertStock(ProductSkusDTO productSkusDTO);

    // 根据商品编号判断是否存在上架的 SKU
    int countAvailableSkusByProductSn(String productSn);


}
